Stubbifier: debloating dynamic server-side JavaScript applications
نویسندگان
چکیده
JavaScript is an increasingly popular language for server-side development, thanks in part to the Node.js runtime environment and its vast ecosystem of modules. With package manager npm, users are able easily include external modules as dependencies their projects. However, npm installs with all functionality, even if only a fraction needed, which causes undue increase code size. Eliminating this unused functionality from distributions desirable, but sound analysis required find difficult due JavaScript’s extreme dynamicity. We present fully automatic technique that identifies by constructing static or dynamic call graphs application’s tests, replacing deemed unreachable either file- function-level stubs. Due highly nature, graph construction may suffer unsoundness, i.e., identified fact be reachable. To handle such cases, stub called, it will fetch execute original on-demand preserve behavior. The also provides optional guarded execution mode guard application against injection vulnerabilities untested resulted expansion. This implemented open source tool called Stubbifier, designed help developers produce minimal production distribution. Stubbifier supports ECMAScript 2019 standard. In empirical evaluation on 15 applications 75 clients these applications, reduced size 56% average while incurring minor performance overhead. shows Stubbifier’s capable preventing several known manifested stubbed-out code. Finally, can work alongside bundlers, tools bundling dependencies. For considered subject we measured reduction 37% bundled distributions.
منابع مشابه
A Security Architecture for Server-Side JavaScript: Extended Abstract
Node.js is a popular JavaScript server-side framework with an efficient runtime for cloud-based eventdriven architectures. Its strength is the presence of thousands of third party libraries which allow developers to quickly build and deploy applications. These very libraries are a source of security threats as a vulnerability in one library can (and in some cases did) compromise one’s entire se...
متن کاملNode - Up and Running: Scalable Server-Side Code with JavaScript
Spend your few moment to read a book even only few pages. Reading book is not obligation and force for everybody. When you don't want to read, you can get punishment from the publisher. Read a book becomes a choice of your different characteristics. Many people with reading habit will always be enjoyable to read, or on the contrary. For some reasons, this node up and running scalable server sid...
متن کاملJavaScript Zero: Real JavaScript and Zero Side-Channel Attacks
Modern web browsers are ubiquitously used by billions of users, connecting them to the world wide web. From the other side, web browsers do not only provide a unified interface for businesses to reach customers, but they also provide a unified interface for malicious actors to reach users. The highly optimized scripting language JavaScript plays an important role in the modern web, as well as f...
متن کاملBook Review Node: Up and Running: Scalable Server-Side Code with JavaScript
For a swiftly evolving framework in its relative infancy (current version at the time of this review is v0.8.11) this book serves as an illustrious introduction and start-up guide. The book's version of node is v0.6.6 which causes demos to not run as smoothly as one would like. However, due to the wealth of preliminary information and its focus on getting up and running, anyone thinking of work...
متن کاملAsqium: A JavaScript Plugin Framework for Extensible Client and Server-Side Components
JavaScript has become a language for programming complex Web applications, whose logic is deployed across both Web browsers and Web servers. Current software packaging mechanisms for JavaScript enable a basic level of modularity and reuse. However, they have not yet reached full maturity in terms of enabling system extensions with features contributed as third-party plugins, while encapsulating...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
ژورنال
عنوان ژورنال: Empirical Software Engineering
سال: 2022
ISSN: ['1382-3256', '1573-7616']
DOI: https://doi.org/10.1007/s10664-022-10195-6